package com.ypd.shop.service.impl;

import java.util.List;

import cn.hutool.core.bean.BeanUtil;
import com.ypd.common.utils.SecurityUtils;
import com.ypd.shop.domain.Statistic;
import com.ypd.shop.domain.vo.PropertiesVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ypd.shop.mapper.PropertiesMapper;
import com.ypd.shop.domain.Properties;
import com.ypd.shop.service.IPropertiesService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 店铺管理Service业务层处理
 * 
 * @author lin
 * @date 2025-02-28
 */
@Service
public class PropertiesServiceImpl implements IPropertiesService 
{
    @Autowired
    private PropertiesMapper propertiesMapper;
    @Autowired
    private StatisticServiceImpl statisticService;
    /**
     * 查询店铺管理
     *
     * @param propertyId 店铺管理主键
     * @return 店铺管理
     */
    @Override
    public PropertiesVo selectPropertiesByPropertyId(Long propertyId)
    {
        //当进行查询的时候,每次查询增加一次浏览量
        //注意:statistic和properties共享主键
        Statistic statistic = statisticService.selectStatisticByPropertyId(propertyId);
        statistic.setHits(statistic.getHits()+1);
        statisticService.updateStatistic(statistic);
        Properties properties = propertiesMapper.selectPropertiesByPropertyId(propertyId);
        PropertiesVo vo = new PropertiesVo();
        vo.setStatistic(statistic);
        BeanUtil.copyProperties(properties,vo);
        return vo;

    }

    /**
     * 查询店铺管理列表(管理端)
     * 
     * @param properties 店铺管理
     * @return 店铺管理
     */
    @Override
    public List<Properties> selectPropertiesList(Properties properties)
    {
        return propertiesMapper.selectPropertiesList(properties);
    }

    /**
     * 查询我的店铺管理列表
     *
     * @param properties 店铺管理
     * @return 店铺管理
     */
    @Override
    public List<Properties> selectPropertiesMyList(Properties properties)
    {
        properties.setUserId(SecurityUtils.getUserId());
        return propertiesMapper.selectPropertiesList(properties);
    }

    /**
     * 查询店铺管理列表(用戶端)
     *
     * @param properties 店铺管理
     * @return 店铺管理
     */
    @Override
    public List<Properties> selectPropertiesListByUser(Properties properties)
    {
        //用户只能在首页查到status为1,2
        //直接在xml中修改
        return propertiesMapper.selectPropertiesListByUser(properties);
    }

    /**
     * 新增店铺管理
     * 
     * @param properties 店铺管理
     * @return 结果
     */
    @Override
    @Transactional
    public int insertProperties(Properties properties)
    {
        //进行新增文章的同时新增statistic
        properties.setUserId(SecurityUtils.getUserId());
         propertiesMapper.insertProperties(properties);
        statisticService.insertStatistic(Statistic.builder().propertyId(properties.getPropertyId()).hits(0L).commentNum(0L).build());
        return 1;
    }

    /**
     * 修改店铺管理
     * 
     * @param properties 店铺管理
     * @return 结果
     */
    @Override
    public int updateProperties(Properties properties)
    {
        return propertiesMapper.updateProperties(properties);
    }

    /**
     * 批量删除店铺管理
     * 
     * @param propertyIds 需要删除的店铺管理主键
     * @return 结果
     */
    @Override
    public int deletePropertiesByPropertyIds(Long[] propertyIds)
    {
        //进行删除的时候,也要删除点击量表

        return propertiesMapper.deletePropertiesByPropertyIds(propertyIds);
    }

    /**
     * 删除店铺管理信息
     * 
     * @param propertyId 店铺管理主键
     * @return 结果
     */
    @Override
    public int deletePropertiesByPropertyId(Long propertyId)
    {
        return propertiesMapper.deletePropertiesByPropertyId(propertyId);
    }
}
